Currently, access over the Internet to Web-based applications is provided by having a Web-browser connect directly over a network of routers to a Web-server that maintains static content in data files, and composes dynamic content by executing programs, typically cgi-bin scripts or Java servlets. However, during periods of congestion due to traffic patterns on the Internet, this arrangement results in poor response times for the end client. The situation is typically worse the farther the client is located from the Web-server and the greater the number of intermediary routers involved in the network connection.
One way to improve application response time, reliability, and availability is to distribute the applications to proxy servers located closer to the client browsers. Distribution of content is used to improve the performance of the network by means of proxies within the network that cache pages.
The simple caching approach works well for data that is static and unchanging, e.g. images, video clips, etc. A proxy server is deployed within the network in many different ways. Some of the common ways include using a proxy server as a reverse proxy, where the proxy server is located closer to the web-server it is proxying for; as a forward proxy, where the proxy server is located closer to the browser or the client applications; or is as other auxiliary servers which may be located elsewhere within the network. The proxy server usually provides information to the browser on behalf of a backend server. The browser may contact the proxy server due to a variety of reasons e.g., because it has been explicitly configured to do so, or because the domain name server gives it the location of a proxy server instead of the backend web-server, or because a network operator or backend web-server operator has configured the network to send requests from the browser to the proxy server in a transparent fashion.
However, the techniques of caching that are commonly deployed in the current Internet do not work well with a large portion of web-accessible content. Data that is personalized to a client, or data that is generated by invocation of programs like cgi-bin scripts or servlets can not be readily cached at the proxies. For a server offering electronic services over the Internet, non-static data forms a significant portion of their overall data content. It would be advantageous to have a scheme whereby such dynamically generated content, and web-centric applications can also benefit from the presence of proxies.
As in the case of caching of static data, it is highly desirable that the caching of applications be done so that the administrative and operation control of the data/application resides with the original server, rather than with at the proxy server. A solution is needed which accelerates applications while still providing the administrative control of the application to the original server, rather than the proxy server.